//package com.etv.launcher;
//
//import android.content.Intent;
//import android.graphics.Color;
//import android.graphics.drawable.Drawable;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.Looper;
//
//import androidx.annotation.NonNull;
//import androidx.annotation.Nullable;
//import androidx.leanback.app.BackgroundManager;
//import androidx.leanback.app.BrowseSupportFragment;
//import androidx.leanback.widget.ArrayObjectAdapter;
//import androidx.leanback.widget.HeaderItem;
//import androidx.leanback.widget.ImageCardView;
//import androidx.leanback.widget.ListRow;
//import androidx.leanback.widget.ListRowPresenter;
//import androidx.leanback.widget.OnItemViewClickedListener;
//import androidx.leanback.widget.OnItemViewSelectedListener;
//import androidx.leanback.widget.Presenter;
//import androidx.leanback.widget.Row;
//import androidx.leanback.widget.RowPresenter;
//import androidx.core.app.ActivityOptionsCompat;
//import androidx.core.content.ContextCompat;
//
//import android.util.DisplayMetrics;
//import android.util.Log;
//import android.view.Gravity;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.bumptech.glide.Glide;
//import com.bumptech.glide.request.target.SimpleTarget;
//import com.bumptech.glide.request.transition.Transition;
//
//import java.util.Collections;
//import java.util.List;
//import java.util.Timer;
//import java.util.TimerTask;
//
//public class MainFragment extends BrowseSupportFragment {
//    private static final String TAG = "MainFragment";
//
//    private static final int BACKGROUND_UPDATE_DELAY = 300;
//    private static final int GRID_ITEM_WIDTH = 200;
//    private static final int GRID_ITEM_HEIGHT = 200;
//    private static final int NUM_ROWS = 6;
//    private static final int NUM_COLS = 15;
//
//    private final Handler mHandler = new Handler(Looper.myLooper());
//    private Drawable mDefaultBackground;
//    private DisplayMetrics mMetrics;
//    private Timer mBackgroundTimer;
//    private String mBackgroundUri;
//    private BackgroundManager mBackgroundManager;
//
//    @Override
//    public void onActivityCreated(Bundle savedInstanceState) {
//        Log.i(TAG, "onCreate");
//        super.onActivityCreated(savedInstanceState);
//
//        prepareBackgroundManager();
//
//        setupUIElements();
//
//        loadRows();
//
//        setupEventListeners();
//    }
//
//    @Override
//    public void onDestroy() {
//        super.onDestroy();
//        if (null != mBackgroundTimer) {
//            Log.d(TAG, "onDestroy: " + mBackgroundTimer.toString());
//            mBackgroundTimer.cancel();
//        }
//    }
//
//    private void loadRows() {
//        List<Movie> list = MovieList.setupMovies();
//
//        ArrayObjectAdapter rowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
//        CardPresenter cardPresenter = new CardPresenter();
//
//        int i;
//        for (i = 0; i < NUM_ROWS; i++) {
//            if (i != 0) {
//                Collections.shuffle(list);
//            }
//            ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);
//            for (int j = 0; j < NUM_COLS; j++) {
//                listRowAdapter.add(list.get(j % 5));
//            }
//            HeaderItem header = new HeaderItem(i, MovieList.MOVIE_CATEGORY[i]);
//            rowsAdapter.add(new ListRow(header, listRowAdapter));
//        }
//
//        HeaderItem gridHeader = new HeaderItem(i, "PREFERENCES");
//
//        GridItemPresenter mGridPresenter = new GridItemPresenter();
//        ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(mGridPresenter);
//        gridRowAdapter.add(getResources().getString(R.string.grid_view));
//        gridRowAdapter.add(getString(R.string.error_fragment));
//        gridRowAdapter.add(getResources().getString(R.string.personal_settings));
//        rowsAdapter.add(new ListRow(gridHeader, gridRowAdapter));
//
//        setAdapter(rowsAdapter);
//    }
//
//    private void prepareBackgroundManager() {
//
//        mBackgroundManager = BackgroundManager.getInstance(getActivity());
//        mBackgroundManager.attach(getActivity().getWindow());
//
//        mDefaultBackground = ContextCompat.getDrawable(getActivity(), R.drawable.default_background);
//        mMetrics = new DisplayMetrics();
//        getActivity().getWindowManager().getDefaultDisplay().getMetrics(mMetrics);
//    }
//
//    private void setupUIElements() {
//        // setBadgeDrawable(getActivity().getResources().getDrawable(
//        // R.drawable.videos_by_google_banner));
//        setTitle(getString(R.string.browse_title)); // Badge, when set, takes precedent
//        // over title
//        setHeadersState(HEADERS_ENABLED);
//        setHeadersTransitionOnBackEnabled(true);
//
//        // set fastLane (or headers) background color
//        setBrandColor(ContextCompat.getColor(getActivity(), R.color.fastlane_background));
//        // set search icon color
//        setSearchAffordanceColor(ContextCompat.getColor(getActivity(), R.color.search_opaque));
//    }
//
//    private void setupEventListeners() {
//        setOnSearchClickedListener(new View.OnClickListener() {
//
//            @Override
//            public void onClick(View view) {
//                Toast.makeText(getActivity(), "Implement your own in-app search", Toast.LENGTH_LONG)
//                        .show();
//            }
//        });
//
//        setOnItemViewClickedListener(new ItemViewClickedListener());
//        setOnItemViewSelectedListener(new ItemViewSelectedListener());
//    }
//
//    private void updateBackground(String uri) {
//        int width = mMetrics.widthPixels;
//        int height = mMetrics.heightPixels;
//        Glide.with(getActivity())
//                .load(uri)
//                .centerCrop()
//                .error(mDefaultBackground)
//                .into(new SimpleTarget<Drawable>(width, height) {
//                    @Override
//                    public void onResourceReady(@NonNull Drawable drawable,
//                                                @Nullable Transition<? super Drawable> transition) {
//                        mBackgroundManager.setDrawable(drawable);
//                    }
//                });
//        mBackgroundTimer.cancel();
//    }
//
//    private void startBackgroundTimer() {
//        if (null != mBackgroundTimer) {
//            mBackgroundTimer.cancel();
//        }
//        mBackgroundTimer = new Timer();
//        mBackgroundTimer.schedule(new UpdateBackgroundTask(), BACKGROUND_UPDATE_DELAY);
//    }
//
//    private final class ItemViewClickedListener implements OnItemViewClickedListener {
//        @Override
//        public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
//                                  RowPresenter.ViewHolder rowViewHolder, Row row) {
//
//            if (item instanceof Movie) {
//                Movie movie = (Movie) item;
//                Log.d(TAG, "Item: " + item.toString());
//                Intent intent = new Intent(getActivity(), DetailsActivity.class);
//                intent.putExtra(DetailsActivity.MOVIE, movie);
//
//                Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
//                                getActivity(),
//                                ((ImageCardView) itemViewHolder.view).getMainImageView(),
//                                DetailsActivity.SHARED_ELEMENT_NAME)
//                        .toBundle();
//                getActivity().startActivity(intent, bundle);
//            } else if (item instanceof String) {
//                if (((String) item).contains(getString(R.string.error_fragment))) {
//                    Intent intent = new Intent(getActivity(), BrowseErrorActivity.class);
//                    startActivity(intent);
//                } else {
//                    Toast.makeText(getActivity(), ((String) item), Toast.LENGTH_SHORT).show();
//                }
//            }
//        }
//    }
//
//    private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
//        @Override
//        public void onItemSelected(
//                Presenter.ViewHolder itemViewHolder,
//                Object item,
//                RowPresenter.ViewHolder rowViewHolder,
//                Row row) {
//            if (item instanceof Movie) {
//                mBackgroundUri = ((Movie) item).getBackgroundImageUrl();
//                startBackgroundTimer();
//            }
//        }
//    }
//
//    private class UpdateBackgroundTask extends TimerTask {
//
//        @Override
//        public void run() {
//            mHandler.post(new Runnable() {
//                @Override
//                public void run() {
//                    updateBackground(mBackgroundUri);
//                }
//            });
//        }
//    }
//
//    private class GridItemPresenter extends Presenter {
//        @Override
//        public ViewHolder onCreateViewHolder(ViewGroup parent) {
//            TextView view = new TextView(parent.getContext());
//            view.setLayoutParams(new ViewGroup.LayoutParams(GRID_ITEM_WIDTH, GRID_ITEM_HEIGHT));
//            view.setFocusable(true);
//            view.setFocusableInTouchMode(true);
//            view.setBackgroundColor(
//                    ContextCompat.getColor(getActivity(), R.color.default_background));
//            view.setTextColor(Color.WHITE);
//            view.setGravity(Gravity.CENTER);
//            return new ViewHolder(view);
//        }
//
//        @Override
//        public void onBindViewHolder(ViewHolder viewHolder, Object item) {
//            ((TextView) viewHolder.view).setText((String) item);
//        }
//
//        @Override
//        public void onUnbindViewHolder(ViewHolder viewHolder) {
//        }
//    }
//
//}